import { nextTick } from "vue";
import NProgress from "nprogress";
import "nprogress/nprogress.css";
import router from "@/router";
import store from "@/store";

export default {
	//刷新标签
	refresh() {
		NProgress.start();
		const route = router.currentRoute.value;
		store.commit("removeKeepLive", route.name);
		store.commit("setRouteShow", false);
		nextTick(() => {
			store.commit("pushKeepLive", route.name);
			store.commit("setRouteShow", true);
			NProgress.done();
		});
	},

	//关闭标签
	close(tag) {
		const route = tag || router.currentRoute.value;
		store.commit("removeViewTags", route);
		store.commit("removeIframeList", route);
		store.commit("removeKeepLive", route.name);
		const tagList = store.state.viewTags.viewTags;
		const latestView = tagList.slice(-1)[0];
		if (latestView) {
			router.push(latestView);
		} else {
			router.push("/");
		}
	},

	//关闭标签后处理
	closeNext(next) {
		const route = router.currentRoute.value;
		store.commit("removeViewTags", route);
		store.commit("removeIframeList", route);
		store.commit("removeKeepLive", route.name);
		if (next) {
			const tagList = store.state.viewTags.viewTags;
			next(tagList);
		}
	},

	//关闭其他
	closeOther() {
		const route = router.currentRoute.value;
		const tagList = [...store.state.viewTags.viewTags];
		tagList.forEach((tag) => {
			if (
				(tag.meta && tag.meta.affix) ||
				route.fullPath == tag.fullPath
			) {
				return true;
			} else {
				this.close(tag);
			}
		});
	},

	//设置标题
	setTitle(title) {
		store.commit("updateViewTagsTitle", title);
	},
};
